package main

import "fmt"

func fn(n int) {
	n = 100
}

func fn2(m *int) {
	// 参数传递的是一个指针，m保存的是a2的指针
	// 通过指针获取对应的值，进行修改；其实就是修改a2的值
	*m = 100 // a2 = 100
}
func main() {
	// a2 := 8
	// // 指针传递(引用传递)
	// // 获取a2的指针，作为参数传递
	// fn2(&a2)
	// fmt.Println(a2)

	// a1 := 8
	// // 值传递
	// // 将a1作为参数传递，拷贝一份a1的值，和原来的a1的值已经没有任何关系
	// fn(a1)
	// fmt.Println(a1) // 8

	var p1 *int // 0值 int 类型的指针
	// *p1 = 2
	fmt.Println(p1)
	p2 := new(int) // 为int分配内存，不是0值,int类型的指针
	fmt.Println(p2)
	// *p2 = 2

}
